<?php
class NewsController extends Zend_Controller_Action
{
	private $_uiVar = array();
	private $_news;

	public function init()
	{
		$this->_uiVar["html"]["title"] = BMSC_Html::WEBSITE_TITLE;

		try
		{
			$readerDb = Zend_Registry::get("READER_DB");
			$writerDb = Zend_Registry::get("WRITER_DB");

			$this->_news = new BMSC_News($readerDb, $writerDb);
		}
		catch (Exception $ex)
		{
			echo $ex->getMessage();
		}
	}

	function indexAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			$smarty = Zend_Registry::get("SMARTY");
			$smarty->assign("uiVar", $this->_uiVar);
			$smarty->display("news/index.tpl");
		}
		else
		{
			$zokikAdminSession->redirect["NEXT_URL"] = "/news";
			header("Location: /member/login");
		}
	}

	function infoAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$newsID = (int)trim($this->_getParam("id"));
				$news = $this->_news->getNews($newsID);
				echo json_encode(array("code" => 0, "data" => $news));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	function addAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimNewNewsData($formData);
				$errorMessage = $this->_checkNewNewsData($formData);
				if (empty($errorMessage))
				{
					$row = $this->_news->addNews($formData["newNewsLanguageID"], 
					$formData["newNewsTitle"], 
					$formData["newNewsImageURL"], 
					$formData["newNewsSummary"], 
					isset($formData['newNewsIsNew']) ? 1 : 0, 
					$formData["newNewsContent"], 
					$formData["newNewsSource"], 
					$adminSession->member["EMAIL"]);
					if ($row > 0)
						echo json_encode(array("code" => 0, "data" => "- Thành công. <br />"));
					else
						echo json_encode(array("code" => -98, "data" => "- Có lỗi khi lưu dữ liệu vào cơ sở dữ liệu. <br />"));
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	function editAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimEditNewsData($formData);
				$errorMessage = $this->_checkEditNewsData($formData);
				if (empty($errorMessage))
				{
					$row = $this->_news->editNews($formData["editNewsID"], 
					$formData["editNewsLanguageID"], 
					$formData["editNewsTitle"], 
					$formData["editNewsImageURL"], 
					$formData["editNewsSummary"], 
					isset($formData["editNewsIsNew"]) ? 1 : 0, 
					$formData["editNewsContent"], 
					$formData["editNewsSource"], 
					$adminSession->member["EMAIL"]);
					echo json_encode(array("code" => 0, "data" => "- Thành công. <br />"));
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	function removeAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimRemoveNewsData($formData);
				$errorMessage = $this->_checkRemoveNewsData($formData);
				if (empty($errorMessage))
				{
					$row = $this->_news->removeNews($formData["removeNewsID"], $adminSession->member["EMAIL"]);
					if ($row > 0)
						echo json_encode(array("code" => 0, "data" => "- Thành công. <br />"));
					else
						echo json_encode(array("code" => -98, "data" => "- Có lỗi khi lưu dữ liệu vào cơ sở dữ liệu. <br />"));
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	public function listAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$from = (int)trim($this->_getParam("from"));
				$numberOfNews = (int)trim($this->_getParam("number"));
				$news = $this->_news->getNewsList($from, $numberOfNews);
				echo json_encode(array("code" => 0, "data" => $news));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	private function _trimNewNewsData($formData)
	{
		$formData["newNewsLanguageID"] = trim($formData["newNewsLanguageID"]);
		$formData["newNewsTitle"] = trim($formData["newNewsTitle"]);
		$formData["newNewsImageURL"] = trim($formData["newNewsImageURL"]);
		$formData["newNewsSource"] = trim($formData["newNewsSource"]);
		$formData["newNewsSummary"] = trim($formData["newNewsSummary"]);
		$formData["newNewsContent"] = trim($formData["newNewsContent"]);
		return $formData;
	}

	private function _trimEditNewsData($formData)
	{
		$formData["editNewsID"] = (int)trim($formData["editNewsID"]);
		$formData["editNewsLanguageID"] = trim($formData["editNewsLanguageID"]);
		$formData["editNewsTitle"] = trim($formData["editNewsTitle"]);
		$formData["editNewsImageURL"] = trim($formData["editNewsImageURL"]);
		$formData["editNewsSource"] = trim($formData["editNewsSource"]);
		$formData["editNewsSummary"] = trim($formData["editNewsSummary"]);
		$formData["editNewsContent"] = trim($formData["editNewsContent"]);
		return $formData;
	}

	private function _trimRemoveNewsData($formData)
	{
		$formData["removeNewsID"] = trim($formData["removeNewsID"]);
		return $formData;
	}

	private function _checkNewNewsData($formData)
	{
		$errorMessage = "";
		if (empty($formData["newNewsLanguageID"]) || empty($formData["newNewsTitle"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";
		return $errorMessage;
	}

	private function _checkEditNewsData($formData)
	{
		$errorMessage = "";
		if (empty($formData["editNewsLanguageID"]) || empty($formData["editNewsTitle"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";
		return $errorMessage;
	}

	private function _checkRemoveNewsData($formData)
	{
		$errorMessage = "";
		if (empty($formData["removeNewsID"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";
		return $errorMessage;
	}
}
?>